# PowerShell 虚拟环境激活脚本
# 使用方法: .\activate.ps1

param(
    [switch]$Force = $false
)

# 检查是否已在虚拟环境中
if ($env:VIRTUAL_ENV -and -not $Force) {
    Write-Host "⚠️  已在虚拟环境中: $env:VIRTUAL_ENV" -ForegroundColor Yellow
    Write-Host "   使用 -Force 参数强制重新激活" -ForegroundColor Yellow
    return
}

# 设置虚拟环境路径
$VENV_PATH = "$PSScriptRoot\.venv"

# 检查虚拟环境是否存在
if (-not (Test-Path "$VENV_PATH\Scripts\python.exe")) {
    Write-Host "❌ 虚拟环境不存在，请先运行: python -m venv .venv" -ForegroundColor Red
    return
}

# 保存原始环境变量
if (-not $env:VIRTUAL_ENV_ORIGINAL_PATH) {
    $env:VIRTUAL_ENV_ORIGINAL_PATH = $env:PATH
    $env:VIRTUAL_ENV_ORIGINAL_PSMODULEPATH = $env:PSMODULEPATH
}

# 设置新的环境变量
$env:VIRTUAL_ENV = $VENV_PATH
$env:PATH = "$VENV_PATH\Scripts;$env:PATH"

# 移除旧的虚拟环境路径
if ($env:VIRTUAL_ENV_OLD_PATH) {
    $env:PATH = ($env:PATH -split ';' | Where-Object { $_ -ne $env:VIRTUAL_ENV_OLD_PATH }) -join ';'
}

# 保存旧的虚拟环境路径
$env:VIRTUAL_ENV_OLD_PATH = $VENV_PATH

# 设置提示符
function global:prompt {
    if ($env:VIRTUAL_ENV) {
        Write-Host "(.venv) " -NoNewline -ForegroundColor Green
    }
    return "PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) "
}

# 输出激活信息
Write-Host "✅ 虚拟环境已激活: $VENV_PATH" -ForegroundColor Green
Write-Host "   Python路径: $VENV_PATH\Scripts\python.exe" -ForegroundColor Cyan

# 检查依赖是否已安装
if (Test-Path "$VENV_PATH\Lib\site-packages\fastapi") {
    Write-Host "   ⚡ 依赖已安装，可以开始开发" -ForegroundColor Green
} else {
    Write-Host "   📦 依赖未安装，请运行: .\install-deps.ps1" -ForegroundColor Yellow
}